package screen.level2.overlay;

import screen.main.R;
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory;
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Matrix;
import android.graphics.Paint; 
import android.graphics.Point; 
import android.graphics.RectF; 
import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.Projection; 

public class rideOverlay extends Overlay 
{ 
	private GeoPoint gp1; 
	private GeoPoint gp2; 
	private int mRadius=6; 
	private int mode=0; 
	private int defaultColor; 
	private String text=""; 
	private Bitmap img = null; 

	public rideOverlay(GeoPoint gp1,GeoPoint gp2,int mode){ // GeoPoint is a int. (6E) 
		this.gp1 = gp1; 
		this.gp2 = gp2; 
		this.mode = mode; 
		defaultColor = 999; // no defaultColor 
	
	} 

	public rideOverlay(GeoPoint gp1,GeoPoint gp2,int mode, int defaultColor){ 
		this.gp1 = gp1; 
		this.gp2 = gp2; 
		this.mode = mode; 
		this.defaultColor = defaultColor; 
	} 
	public void setText(String t) {
		this.text = t; 
	} 
	public void setBitmap(Bitmap bitmap){ 
		this.img = bitmap; 
	} 
	public int getMode() {
		return mode; 
	} 
	
	@Override 
	public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
		Projection projection = mapView.getProjection(); 
		if (shadow == false) {
			Paint paint = new Paint(); 
			paint.setAntiAlias(true); 
			Point point = new Point(); 
			projection.toPixels(gp1, point); 
			// mode=1&#65306;start 
		if(mode==1) {
			if(defaultColor==999) 
			paint.setColor(Color.BLUE); 
			else 
			paint.setColor(defaultColor); 
			RectF oval=new RectF(point.x - mRadius, point.y - mRadius, 
			point.x + mRadius, point.y + mRadius); 
			// start point 
			canvas.drawOval(oval, paint); 
		} 
		// mode=2&#65306;path 
		else if(mode==2){ 
			if(defaultColor==999) 
			paint.setColor(Color.RED); 
			else 
			paint.setColor(defaultColor); 
			Point point2 = new Point(); 
			projection.toPixels(gp2, point2); 
			paint.setStrokeWidth(5); 
			paint.setAlpha(120); 
			canvas.drawLine(point.x, point.y, point2.x,point2.y, paint); 
		} 
		/* mode=3&#65306;end */ 
		else if(mode==3) {
			/* the last path */ 
			
			if(defaultColor==999) 
			paint.setColor(Color.GREEN); 
			else 
			paint.setColor(defaultColor); 
			Point point2 = new Point(); 
			projection.toPixels(gp2, point2); 
			paint.setStrokeWidth(5); 
			paint.setAlpha(120); 
			canvas.drawLine(point.x, point.y, point2.x,point2.y, paint); 
			RectF oval=new RectF(point2.x - mRadius,point2.y - mRadius, 
			point2.x + mRadius,point2.y + mRadius); 
			/* end point */ 
			paint.setAlpha(255); 
			canvas.drawOval(oval, paint); 
			
			Matrix matrix = new Matrix();
			matrix.postTranslate(-20, -20);
			matrix.postTranslate(point.x, point.y);
			Bitmap bitmap = BitmapFactory.decodeResource(mapView.getResources(),
					R.drawable.flag);
			canvas.drawBitmap(bitmap, matrix, paint);
		} 
		
		else if(mode==4) {
			/* the last path */ 
			
//			if(defaultColor==999) 
//			paint.setColor(Color.GREEN); 
//			else 
//			paint.setColor(defaultColor); 
//			Point point2 = new Point(); 
//			projection.toPixels(gp2, point2); 
//			paint.setStrokeWidth(5); 
//			paint.setAlpha(120); 
//			canvas.drawLine(point.x, point.y, point2.x,point2.y, paint); 
//			RectF oval=new RectF(point2.x - mRadius,point2.y - mRadius, 
//			point2.x + mRadius,point2.y + mRadius); 
//			/* end point */ 
//			paint.setAlpha(255); 
//			canvas.drawOval(oval, paint); 
			
			Matrix matrix = new Matrix();
			matrix.postTranslate(-20, -20);
			matrix.postTranslate(point.x, point.y);
			Bitmap bitmap = BitmapFactory.decodeResource(mapView.getResources(),
					R.drawable.ride);
			canvas.drawBitmap(bitmap, matrix, paint);
		} 
	} 
	
	return super.draw(canvas, mapView, shadow, when); 
	} 

}


